1. Field of the Invention
The present invention generally relates to barcodes. More particularly, the present invention relates to methods and systems for creating barcodes where finder position detection and alignment patterns include certain geometric shapes that facilitate detection and decoding.
2. Description of Related Art
Typically, barcodes are machine-readable representation of information displayed in a visual format on a surface. There are different types of barcodes. Linear barcodes store data in the widths and spacing of printed parallel lines. Stacked barcodes and 2-dimensional (2D) barcodes, which represent stored data in patterns of dots, concentric circles and hidden images, have a higher data storage capacity than linear barcodes. Barcodes may be read by optical scanners called barcode readers and/or scanned from an image by special software.
To increase the amount of information that can be stored in a given space, linear requirements of simple barcodes have been extended with matrix codes. Matrix codes are a type of 2D barcode. Matrix codes are made of a grid of square cells called modules. Stacked barcodes are similar to 2D barcodes. Stacked barcodes are formed by taking a traditional linear barcode and placing it in an envelope that allows multiple rows of linear barcodes. FIG. 1 illustrates an example of a matrix barcode called QRCode1 typically used in the art today. 1 QRCode is trademark of Denso-Wave, Inc.
The mapping between data and the barcode that embeds the data is called a symbology. Symbologies include specifications relating to various parameters, such as, the encoding of the data, the start and stop markers into bars or dots and spaces, the size of the quiet zone required to be before and after the barcode. Symbologies also include a specification for forward error correction used in the barcode.
Linear and 2D barcode symbologies may use horizontal and vertical timing patterns to facilitate decoding of the barcode. The timing patterns usually include a one-module wide row or column of alternating dark and light modules, commencing and ending with a dark module. Linear and 2D barcode symbologies may use position detection patterns that enable the symbol density and version to be determined and may provide datum positions for determining module coordinates.
Existing symbologies encode symbols in a linear or 2D image. More specifically, such symbologies use black and white bars or dots that overall define the barcode image. When decoding a linear or 2D code example, various confusing cases may arise. For example, in one case, consecutive long sequences of whites (or blacks) may render it hard to determine the number of consecutive whites and blacks due to camera distortion and camera viewing angle. FIG. 2 illustrates a typical difference between module sizes due to certain perspective distortions, such as parallax.
In another example, the typical barcode may utilize various patterns to determine the orientation and location of the image. These patterns might repeat themselves in the data. Such repetition might render decoding the barcode a difficult, if not impossible task.
In a further example, due to the large possible orientations of the camera relative to the barcode, each symbol may take on a different size and/or shape relative to the scanner image. The symbologies may assign a timing pattern in the image and try to resolve the location of each symbol through the timing and location patterns. At large or highly skewed viewing angles, this approach might not work, because the symbols may scale up to distorted and different-sized shapes at the final image that are unrecognizable (i.e., un-decodable) to the scanner software.
In barcode symbologies, alignment patterns are typically used to correct errors in the estimates. Certain image distortions, such as perspective distortions, defects in the lenses of the camera, defects on the surfaces or natural curvatures of certain displays such as CRT monitors, may cause very large distortions. If the error caused by distortion causes the decoder to lose where the alignment pattern is, either the alignment pattern must be searched around where the estimated position, which may cause significant performance problems or it would render the barcode undecipherable.
Hence, it would be desirable to provide a method and system that is capable of creating barcodes that facilitate decoding in a manner that solves one or more of the problems with the typical barcodes of today.